package jam.model;

import java.util.*;

//
// =============================================================================
//

public class Channel {
    private String name;
    private Set<String> users;
    private boolean locked;
    private Set<String> invited;
    
    //
    // =========================================================================
    //
    
    public String getName() { return this.name; }
    
    //
    // =========================================================================
    //
    
    public boolean hasUser(String username) { return this.users.contains(username.toLowerCase()); }
    
    public Set<String> getUsers() { return Collections.unmodifiableSet(this.users); }     
    public void addUser(String username) { this.users.add(username.toLowerCase()); }
    public void removeUser(String username) { this.users.remove(username.toLowerCase()); }
    
    //
    // =========================================================================
    //
    
    public boolean isLocked() { return this.locked; }
    public synchronized void setLocked(boolean locked) { this.locked = locked; }
    
    //
    // =========================================================================
    //
    
    public boolean hasInvited(String username) { return this.invited.contains(username.toLowerCase()); }
    
    public Set<String> getInvited() { return Collections.unmodifiableSet(this.invited); }
    public void addInvited(String username)  { this.invited.add(username.toLowerCase()); }
    public void removeInvited(String username) { this.invited.add(username.toLowerCase()); }
        
    
    //
    // =========================================================================
    //
    
    public Channel(String name) {
        this.name = name.toLowerCase();
        this.users = Collections.synchronizedSet(new TreeSet<String>());
        this.invited = Collections.synchronizedSet(new TreeSet<String>());
    }
}